perm filename TTY.FAI[1,BGB] blob
sn#015997 filedate 1972-12-06 generic text, type T, neo UTF8
00100 TITLE TTY
00200 ;CAREYE TELETYPE COMMAND JUMP TABLE -- NOVEMBER 1972.
00300
00400 OPDEF PPIOT[702B8]
00500
00600 EXTERN CROP,REFRESH
00700 EXTERN SX,SY,DEL,MAG
00800 OLD44:0
00900 PDL: BLOCK 100
01000
01100 ;TELETYPE COMMAND STATE.
01200 DECLARE{CTRL,META,CHR}
01300
01400 SUBR TTY
01500 BEGIN TTY
01600 LAC 17,[IOWD 100,PDL]
01700 LAC 44↔DAC OLD44
01800 PPIOT 2,-=250
01900 PPIOT 3,3003
02000 MOVEI 20
02100 OUTSTR [BYTE(7)15,12,0]
02200 SOJG .-1
02300 CALL(CROP)
02400 CALL(REFRESH)
02500 L0: OUTSTR[BYTE(7)15,12,0]
02600 L1: OUTSTR [ASCIZ"*"]
02700 INCHRW
02800 SETZM CTRL↔TRZE 200↔SETOM CTRL
02900 SETZM META↔TRZE 400↔SETOM META
03000 CAIN 0,15↔GO L1+1
03100 CAIN 0,12↔GO L1
03200 DAC 0,CHR
03300
03400 ;TEST FOR LETTER COMMAND.
03500 LAC 1,0↔ANDI 1,37
03600 CAIGE 0,"A"↔GO .+3
03700 CAIG 0,"Z"↔GO L3
03800 CAIGE 0,"a"↔GO .+3
03900 CAIG 0,"z"↔GO L3
04000
04100 ;WINDOW MOVING COMMANDS.
04200 CAIN 0," "↔GO L2
04300 CAIN 0,":"↔GO[LAC SX↔FAD DEL↔DAC SX↔GO L2]
04400 CAIN 0,";"↔GO[LAC SX↔FSB DEL↔DAC SX↔GO L2]
04500 CAIN 0,")"↔GO[LAC SY↔FAD DEL↔DAC SY↔GO L2]
04600 CAIN 0,"("↔GO[LAC SY↔FSB DEL↔DAC SY↔GO L2]
04700 CAIN 0,"/"↔GO[LAC DEL↔FSC -1↔DAC DEL↔GO L2]
04800 CAIN 0,"\"↔GO[LAC DEL↔FSC 1↔DAC DEL↔GO L2]
04900 CAIN 0,"*"↔GO[LAC MAG↔FMP[1.5]↔DAC MAG↔GO L2]
05000 CAIN 0,"-"↔GO[LAC MAG↔FDV[1.5]↔DAC MAG↔GO L2]
05100 GO L0
05200
05300 L2: CALL(CROP)
05400 CALL(REFRESH)
05500 GO L1+1
00100 EXTERN HISTOGRAM
00200 EXTERN FLGARC,FLGBK
00300
00400 L3: PUSHJ P,@L4(1)↔GO L1
00500
00600 L4: NOP ;null.
00700 FLGA. ;"A"
00800 FLGB. ;"B"
00900 MAKCUT ;"C"
01000 NOP ;"D"
01100 NOP ;"E"
01200 NOP ;"F"
01300 NOP ;"G"
01400 HISTOGRAM ;"H"
01500 TVDSKI ;"I"
01600 NOP ;"J"
01700 KILLER ;"K"
01800 NOP ;"L"
01900 NOP ;"M"
02000 NOP ;"N"
02100 NOP ;"O"
02200 NOP ;"P"
02300 NOP ;"Q"
02400 CART ;"R"
02500 NOP ;"S"
02600 TVCAMI ;"T"
02700 NOP ;"U"
02800 NOP ;"V"
02900 NOP ;"W"
03000 NOP ;"X"
03100 NOP ;"Y"
03200 NOP ;"Z"
03300
03400 NOP: OUTSTR[BYTE(7)15,12]
03500 POP0J
03600 FLGA.: SETCMM FLGARC↔OUTSTR[BYTE(7)15,12]↔POP0J
03700 FLGB.: SETCMM FLGBK ↔OUTSTR[BYTE(7)15,12]↔POP0J
03800
03900 BEND
00100 SUBR(GETFIL)
00200 BEGIN GETFIL
00300 OUTSTR[ASCIZ/ FILE = /]
00400 LAC 1,[POINT 6,FILNAM,-1]
00500 MOVEI 2,6
00600 L: INCHWL
00700 CAIN 15
00800 GO[INCHWL↔POP0J]
00900 SOJL 2,L
01000 SUBI 40
01100 IDPB 1
01200 GO L
01300 BEND
01400
01500 FILNAM: 0 ;FILE NAME.
01600 EXTION: 0 ;EXTENSION.
01700 0
01800 PPPN: 0 ;PROJECT-PROGRAMMER.
01900
02000
02100 ;INPUT A TELEVISION PICTURE FROM A DISK FILE.
02200 EXTERN HEADER,TVBUF,FLGSIX
02300 SUBR(TVDSKI)
02400 BEGIN TVDSKI
02500
02600 CALL(GETFIL)
02700 ;DEFAULT FILE SPECIFICATION.
02800 SKIPN 1,PPPN↔LAC 1,[SIXBIT/DATBGB/]↔DAC 1,PPPN
02900 SKIPN 1,EXTION↔LAC 1,[SIXBIT/TMP/]↔DAC 1,EXTION
03000 SKIPN 1,FILNAM↔LAC 1,[SIXBIT/X/]↔DAC 1,FILNAM
03100
03200 INIT 1,17↔SIXBIT/DSK/↔0↔HALT
03300 LOOKUP 1,FILNAM
03400 GO[OUTSTR[ASCIZ/ LOOKUP FAILED.
03500 /]↔GO .+4]
03600 IN 1,[IOWD =10378,HEADER↔0]↔JFCL
03700 OUTSTR[ASCIZ" EOF.
03800 "]↔ RELEASE 1,
03900 SETZM FILNAM↔SETZ EXTION↔SETZM EXTION+1↔SETZM PPPN
04000 POP0J
04100 BEND
00100 TVPTR: XWD -=6912,TVBUF
00200 TVCLIP: 701002 ;BCLIP=7 TCLIP=0 CAM=1.
00300 TVYXW: BYTE(9)50,34,40
00400 TVERR: 0
00500
00600 ;INPUT A TELEVISION PICTURE FROM A CAMERA.
00700 ;TVCAM(CAMERA).
00800 SUBR(TVCAMI)
00900 BEGIN TVCAMI
01000 OUTSTR[ASCIZ/CAMERA = /]
01100 INCHRW
01200 ANDI 3↔LSH 9↔IORI 700002↔DAC TVCLIP
01300 SETZM FLGSIX
01400 SAVAC(17)
01500 TVTAKE: INIT 17,17↔SIXBIT/TV/↔0
01600 GO[OUTSTR[ASCIZ"CAN'T INIT TV."]↔INCHRW↔GO .-3]
01700
01800 SETZM TVERR↔INPUT 17,TVPTR↔MOVE 1,TVERR
01900 TRNE 1,100060↔GO .-4
02000 RELEASE 17,
02100
02200 ; REPORT ON THE ERROR BITS AND RETAKE IF NECESSARY;
02300 TRNE 1,100000↔OUTSTR [ASCIZ/TV PARITY ERROR.
02400 /]↔ TRNE 1,40 ↔OUTSTR [ASCIZ/TV DATA MISS.
02500 /]↔ TRNE 1,20 ↔OUTSTR [ASCIZ/TV NON EX MEM.
02600 /]↔ TRNE 1,100060↔JRST TVTAKE
02700 ; TIME AND DATE.
02800 CALLI 22↔MOVEM TVTIME#
02900 CALLI 14↔MOVEM TVDATE#
03000 ; CONVERT FROM GREY CODE TO GRAY CODE.
03100 HRLZI 16,[
03200 SETCM 17,(16) ;0
03300 MOVE 15,17 ;1
03400 LSH 15,-1 ;2
03500 AND 15,13 ;3
03600 XORB 17,15 ;4
03700 LSH 15,-2 ;5
03800 AND 15,14 ;6
03900 XOR 17,15 ;7
04000 MOVEM 17,(16) ;10
04100 AOBJN 16, ;11
04200 JRST ;12
04300 BYTE (4)7,7,7,7,7,7,7,7,7
04400 BYTE (4)3,3,3,3,3,3,3,3,3
04500 ]
04600 BLT 16,14
04700 LAC 16,TVPTR
04800 HRRI 12,.+2
04900 JRST
05000 GETAC(17)
05100 POP0J
05200 BEND
00100 SUBR(CART)
00200 BEGIN
00300
00400 ; FIRE UP SPACE WAR JOB.
00500 L0: MOVSI 1,200001
00600 HRRI 1,L4
00700 CALLI 1,400003
00800 OUTCHR ["*"]
00900 MOVEI 7
01000 MOVEM BITS#
01100 ; TTY LIISTEN LOOP.
01200 L1: INCHRW
01250 CAIN "X"↔GO[043000636367↔POP0J]
01300 CAIGE "0"↔JRST L2
01500 CAILE "8"↔JRST L2
01700 ANDI 7
01800 MOVEM BITS
01900 JRST L1
02000
02100 L2: CAIGE "A"↔ JRST L3
02300 CAILE "H"↔ ANDI 7
02500 IORI 10
02600 MOVEM BITS
02700 JRST L1
02800
02900 L3: CAIN 15↔OUTCHR["*"]↔JRST L1
03200
03300
03400 ; SPACE WAR OUTPUT TO RADIO TRANSMITTER.
03500 L4: MOVE BITS;
03600 TRNE 8↔ 770200400054; 1 ACTION;
03700 TRNN 8↔ 770200620054; 0 DIRECT;
03800 TRNE 1↔ 770200440053; 1 DRIVE;
03900 TRNN 1↔ 770200620053; 0 ;
04000 TRNE 2↔ 770200410052; 1 STEER;
04100 TRNN 2↔ 770200600052; 0 ;
04200 TRNE 4↔ 770200360051; 1 CAMPAN;
04300 TRNN 4↔ 770200570051; 0;
04400 770200340050↔770200340055↔CALLI 400024; DISMIS
04700
04800 BEND
00100 SUBR(MAKCUT)
00200 BEGIN
00300 EXTERN REFRESH,MKVICS
00400 SETZ 1,
00500 L1: INCHWL
00600 CAIN 15↔GO L2
00700 IMULI 1,=10
00800 ANDI 17
00900 ADD 1,0
01000 GO L1
01100 L2: INCHWL
01200 CAIL 1,=64
01300 POP0J
01400 MOVNS 1
01500 SETZ 3,
01600 SLACI 2,1B18
01700 LSHC 2,(1)
01800 PUSH P,2
01900 PUSH P,3
02000 PUSHJ P,MKVICS
02100 PUSHJ P,REFRESH
02200 POP0J
02300 BEND
00100 SUBR(KILLER)
00150 EXTERN PGON0
00200 LAC [XWD PGON0+2,PGON0+2]↔DAC PGON0+4
00300 LAC OLD44↔CALLI 11↔JFCL
00400 SETZM AVAIL↔SETZM CORSIZ
00500 SETZM SX↔SETZM SY↔LAC[32.0]↔DAC DEL↔LAC[3.4]↔DAC MAG
00600 CALL(CROP)
00700 CALL(REFRESH)
00800 OUTSTR[BYTE (7)15,12]↔POP0J
00900
01000 CORSIZ: 0
01100 AVAIL: 0
01200 ; PTR ← GETBLK;
01300 SUBR(GETBLK)
01400 BEGIN GETBLK
01500 SKIPN 1,AVAIL↔GO L1
01600 CDR(1)↔DAP AVAIL
01700 SETZM 0(1)↔SETZM 1(1)↔SETZM 2(1)↔SETZM 3(1)
01800 MOVEI 4↔ADDM CORSIZ
01900 ADDI 1,1↔POP0J
02000 ;FOUR MORE K !
02100 ;GET A FOUR K BLOCK OF CORE.
02200 L1: LAC 1,44↔LAC 0,1↔ADDI 0,10000
02300 CALLI 11↔GO[OUTSTR[ASCIZ/NO MORE CORE./]↔HALT]
02400
02500 ;CLEAR THE NEW BLOCK OF CORE.
02600 AOS 1↔DAC 2,AC2#↔LAC 2,44
02700 SETZM(1)↔LIPI(1)↔LAPI(1)1↔BLT(2)
02800
02900 ;MAKE AVAIL LIST.
03000 DAPZ 1,AVAIL↔DIP 1,1↔TLO 1,4
03100 HLRZM 1,(1)↔ADD 1,[XWD 4,4]
03200 CAIE 2,3(1)↔GO .-3↔LAC 2,AC2↔GO GETBLK
03300 BEND
00100 ;RELBLK(PTR);
00200 RELBLK:
00300 BEGIN RELBLK
00400 LAC 1,ARG1↔SUBI 1,1
00500 SETZM 0(1)↔SETZM 1(1)↔SETZM 2(1)↔SETZM 3(1)
00600 LAC 2,AVAIL↔DAP 2,(1)↔DAP 1,AVAIL
00700 NIM -4↔ADDM CORSIZ
00800 POP1J
00900 BEND
01000
01100 ;KLPGON(P)
01200 SUBR(KLPGON)
01300 BEGIN KLPGON
01400 ACCUMULATORS{A2,PGN,E0,Q,R}
01500 LAC PGN,ARG1
01600 CAR E0,1(PGN)
01700 CALL RELBLK,PGN
01800 DAC E0,Q
01900 L: CDR R,1(Q) ;CCW.
02000 CALL RELBLK,Q
02100 CAMN R,E0↔POP1J
02200 DAC R,Q↔GO L
02300 BEND
02400
02500 END TTY